Quando o *pacman* remove um pacote que tem um arquivo de configuração, ele normalmente cria uma cópia backup daquele arquivo de configuração e anexa *.pacsave* ao nome do arquivo. Da mesma forma, quando o *pacman* atualiza um pacote que inclui um novo arquivo de configuração pelo mantenedor, comparando-o com a configuração atualmente instalada, ele salva um arquivo *.pacnew* com a nova configuração. O *pacman* fornece um aviso quando esses arquivos são escritos.

## Contents

*   [1 Por que esses arquivos são criados](#Por_que_esses_arquivos_s.C3.A3o_criados)
*   [2 Arquivos backup do pacote](#Arquivos_backup_do_pacote)
*   [3 Tipos explicados](#Tipos_explicados)
    *   [3.1 .pacnew](#.pacnew)
    *   [3.2 .pacsave](#.pacsave)
*   [4 Localizando arquivos .pac*](#Localizando_arquivos_.pac.2A)
*   [5 Gerenciando arquivos .pacnew](#Gerenciando_arquivos_.pacnew)
    *   [5.1 pacdiff](#pacdiff)
    *   [5.2 Utilitários de terceiros](#Utilit.C3.A1rios_de_terceiros)
*   [6 Veja também](#Veja_tamb.C3.A9m)

## Por que esses arquivos são criados

Um arquivo *.pacnew* pode ser criado durante uma atualização de pacote (`pacman -Syu`, `pacman -Su` ou `pacman -U`) para evitar sobrescrever um arquivo que já existe e foi previamente modificado pelo usuário. Quando isso acontecer, uma mensagem como a seguir aparecerá na saída do *pacman*:

```
atenção: /etc/pam.d/usermod instalado como /etc/pam.d/usermod.pacnew

```

Um arquivo *.pacsave* pode ser criado durante a remoção de um pacote (`pacman -R`) ou na atualização de um pacote (o pacote deve ser removido primeiro). Quando a base de dados do pacman possuir registro de que deve-se fazer backup de um certo arquivo de um pacote, ele vai criar um arquivo *.pacsave*. Quando isso acontece, o pacman emite uma mensagem como a seguir:

```
atenção: /etc/pam.d/usermod salvo como /etc/pam.d/usermod.pacsave

```

Esses arquivos exigem intervenção manual do usuário e é uma boa prática tratar deles imediatamente a cada atualização ou remoção de pacote. Se não for tratado, configurações inadequadas podem resultar em função inadequada do software ou o software sendo incapaz de funcionar por completo.

## Arquivos backup do pacote

Um arquivo `PKGBUILD` do pacote especifica quais arquivos devem ser preservados ou cujo backup deve ser armazenado quando o pacote é atualizado ou removido. Por exemplo, o `PKGBUILD` do `pulseaudio` contém a seguinte linha:

```
backup=('etc/pulse/client.conf' 'etc/pulse/daemon.conf' 'etc/pulse/default.pa')

```

Para evitar que um pacote sobrescreva um certo arquivo, veja [Pacman (Português)#Pular pacotes para não serem atualizados](/index.php/Pacman_(Portugu%C3%AAs)#Pular_pacotes_para_n.C3.A3o_serem_atualizados "Pacman (Português)").

## Tipos explicados

### .pacnew

Para cada um dos [#Arquivos backup do pacote](#Arquivos_backup_do_pacote) sendo atualizado, o pacman compara três [md5sums](https://en.wikipedia.org/wiki/pt:Md5sum "wikipedia:pt:Md5sum") gerados do conteúdo do arquivo: uma soma para a versão originalmente instalada pelo pacote, um para a versão atualmente no sistema de arquivo e uma para a versão no novo pacote. Se a versão do arquivo atualmente no sistema de arquivos foi modificada da versão originalmente instalada pelo pacote, o pacman não consegue saber como mesclar essas alterações com a nova versão do arquivo. Portanto, em vez de escrever no arquivo modificado ao atualizar, o pacman salva a nova versão com uma extensão *.pacnew* e deixa a versão modificada sem alterá-la.

Entrando nos detalhes, os resultados da comparação de soma do MD5 em três vias é um dos seguintes:

	original = *X*, atual = *X*, novo = *X* 

	Todas as três versões do arquivo possuem conteúdo idêntico, então sobrescrever não é um problema. Sobrescreve a versão atual com a nova versão e não notifica o usuário (apesar do conteúdo do arquivo ser o mesmo, isso vai sobrescrever as informações do sistema de arquivos a cerca dos tempos de instalação, modificação e acesso do arquivo, bem como garante que qualquer alteração de permissão do arquivo seja aplicada).

	original = *X*, atual = *X*, novo = *Y* 

	O conteúdo da versão atual é idêntico ao da original, mas a nova versão é diferente. Já que o usuário não modificou a versão atual e a nova versão pode conter melhorias ou correções de erros, sobrescreve a versão atual com a nova versão e não notifica o usuário. Esse é a única automesclagem de novas alterações que o pacman é capaz de realizar.

	original = *X*, atual = *Y*, novo = *X* 

	O pacote original e o novo pacote contêm exatamente a mesma versão do arquivo, mas a versão atualmente no sistema foi modificada. Deixa a versão atual no lugar e descarta a nova versão sem notificar o usuário.

	original = *X*, atual = *Y*, novo = *Y* 

	A nova versão é idêntica à versão atual. Sobrescreve a versão atual com a nova versão e não notifica o usuário (apesar do conteúdo do arquivo ser o mesmo, isso vai sobrescrever as informações do sistema de arquivos a cerca dos tempos de instalação, modificação e acesso do arquivo, bem como garante que qualquer alteração de permissão do arquivo seja aplicada).

	original = *X*, atual = *Y*, nova = *Z* 

	Todas as três versões são diferentes, então deixa a versão atual no lugar, instala a nova versão com uma extensão *.pacnew* e avisa o usuário sobre a nova versão. Espera-se que o usuário mescle manualmente quaisquer alterações necessárias da nova versão na versão atual.

### .pacsave

Se o usuário modificou um dos arquivos especificados em `backup`, então aquele arquivo será renomeado com a extensão *.pacsave* e vai permanecer no sistema de arquivos após o resto do pacote ser removido.

**Nota:** O uso da opção `-n` com `pacman -R` vai resultar na remoção completa de *todos* os arquivos no pacote especificado, então nenhum arquivo *.pacsave* será criado.

## Localizando arquivos .pac*

O pacman não lida com arquivos *.pacnew* automaticamente: você deve mantê-los você mesmo. Algumas poucas ferramentas são apresentadas na próxima seção. Para fazer isso manualmente, você primeiro terá que localizá-los. Ao atualizar ou remover um grande número de pacotes, arquivos *.pac** atualizados serão perdidos. Para descobrir se algum arquivo *.pac** foi instalado, use um entre os seguintes:

*   Para procurar no `/etc`, onde a maioria das configurações globais estão armazenadas: `$ find /etc -regextype posix-extended -regex ".+\.pac(new|save)" 2> /dev/null` ou pesquisar em todo o disco substituindo `/etc` por `/` no comando anterior.
*   Se instalado, [locate](/index.php/Locate_(Portugu%C3%AAs) "Locate (Português)") também pode ser usado. Primeiro reindexe a base de dados: `# updatedb` . Então, execute: `$ locate --existing --regex "\.pac(new|save)$"` 
*   Use o log do pacman para localizá-los: `$ grep --extended-regexp "pac(new|save)" /var/log/pacman.log` Note que o log não mantém rastro dos arquivos atualmente no sistema de arquivos nem daqueles que já foram removidos; o comando acima vai listar todos os arquivos *.pac** que já existiram em seu sistema. Para apenas obter os 10 mais recentes arquivos *.pac**, faça um *pipe* do resultado para `tail`.

## Gerenciando arquivos .pacnew

### pacdiff

[pacman-contrib](https://www.archlinux.org/packages/?name=pacman-contrib) fornece *pacdiff*, uma ferramenta simples para gerenciar arquivos pacnew/pacsave. Com isso, pode-se vai pesquisar por todos os arquivos *.pacnew* e *.pacsave* e pedir por quaisquer ações neles. Ele usa [vimdiff](/index.php/Vim#Merging_files "Vim") por padrão, mas você pode especificar uma ferramenta diferente com `DIFFPROG=*seu_editor* pacdiff`. Veja [List of applications/Utilities#Comparison, diff, merge](/index.php/List_of_applications/Utilities#Comparison.2C_diff.2C_merge "List of applications/Utilities") para outras ferramentas de comparação comum.

### Utilitários de terceiros

Alguns poucos utilitários de terceiros fornecendo vários níveis de automação para essas ferramentas estão disponíveis no [AUR](/index.php/AUR_(Portugu%C3%AAs) "AUR (Português)").

Você pode usar uma das seguintes ferramentas:

*   **dotpac** — Script interativo básico com interface de texto baseada no ncurses e um passo a passo útil. Nenhum recurso de mesclagem ou automesclagem.

	[https://github.com/AladW/dotpac](https://github.com/AladW/dotpac) || [dotpac](https://aur.archlinux.org/packages/dotpac/)

*   **etc-update** — Port pelo Arch do utilitário do Gentoo *etc-update*, fornecendo uma CLI simples para ver, mesclar e editar interativamente alterações. Alterações triviais (como comentários) podem ser mesclados automaticamente.

	[https://wiki.gentoo.org/wiki/Handbook:Parts/Portage/Tools#etc-update](https://wiki.gentoo.org/wiki/Handbook:Parts/Portage/Tools#etc-update) || [etc-update](https://aur.archlinux.org/packages/etc-update/)

*   **pacmarge** — Uma ferramenta para mesclar automaticamente arquivos *.pacnew*

	[https://github.com/foutrelis/pacmarge](https://github.com/foutrelis/pacmarge) || [pacmarge](https://aur.archlinux.org/packages/pacmarge/)

*   **pacnew-auto** — Mesclagem automática de `pacnew` usando *rebase* do [git](https://www.archlinux.org/packages/?name=git).

	[https://github.com/joanrieu/pacnew-auto](https://github.com/joanrieu/pacnew-auto) || [pacnew-auto-git](https://aur.archlinux.org/packages/pacnew-auto-git/)

*   **pacnews-git** — Um script simples visando localizar todos os arquivos *.pacnew*, para então editá-los com [vimdiff](/index.php/Vim#Merging_files "Vim").

	[https://github.com/pbrisbin/scripts/blob/master/pacnews](https://github.com/pbrisbin/scripts/blob/master/pacnews) || [pacnews-git](https://aur.archlinux.org/packages/pacnews-git/)

## Veja também

*   Fórum do Arch Linux: [Dealing with .pacnew files](https://bbs.archlinux.org/viewtopic.php?id=53532) ("Lidando com arquivos .pacnew")